a0274bc16728326672096fb6dc15afee0f1b3dfb,MekHQ/src/mekhq/gui/adapter/PersonnelTableMouseAdapter.java,PersonnelTableMouseAdapter,maybeShowPopup,#MouseEvent#,951

Before Change


        JPopupMenu popup = new JPopupMenu();

        if (e.isPopupTrigger()) {
            if (personnelTab.getPersonnelTable().getSelectedRowCount() == 0) {
                return;
            }
            int row = personnelTab.getPersonnelTable().getSelectedRow();
            boolean oneSelected = personnelTab.getPersonnelTable().getSelectedRowCount() == 1;
            Person person = personnelTab.getPersonModel().getPerson(personnelTab.getPersonnelTable()
                    .convertRowIndexToModel(row));
            JMenuItem menuItem = null;
            JMenu menu = null;
            JMenu submenu = null;
            JCheckBoxMenuItem cbMenuItem = null;
            Person[] selected = personnelTab.getSelectedPeople();
            // **lets fill the pop up menu**//
            if (StaticChecks.areAllEligible(selected)) {
                menu = new JMenu(resourceMap.getString("changeRank.text")); //$NON-NLS-1$
                Ranks ranks = person.getRanks();
                for (int rankOrder = 0; rankOrder < Ranks.RC_NUM; rankOrder++) {
                    Rank rank = ranks.getAllRanks().get(rankOrder);
                    int profession = person.getProfession();

                    // Empty professions need swapped before the
                    // continuation
                    while (ranks.isEmptyProfession(profession)
                            && profession != Ranks.RPROF_MW) {
                        profession = ranks
                                .getAlternateProfession(profession);
                    }

                    if (rank.getName(profession).equals(HYPHEN)) {
                        continue;
                    }

                    // re-route through any profession redirections,
                    // starting with the empty profession check
                    while (rank.getName(profession).startsWith("--") //$NON-NLS-1$
                            && profession != Ranks.RPROF_MW) {
                        if (rank.getName(profession).equals("--")) { //$NON-NLS-1$
                            profession = ranks
                                    .getAlternateProfession(profession);
                        } else if (rank.getName(profession)
                                .startsWith("--")) { //$NON-NLS-1$
                            profession = ranks.getAlternateProfession(rank
                                    .getName(profession));
                        }
                    }

                    if (rank.getRankLevels(profession) > 0) {
                        submenu = new JMenu(rank.getName(profession));
                        for (int level = 0; level <= rank
                                .getRankLevels(profession); level++) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    rank.getName(profession)
                                            + Utilities.getRomanNumeralsFromArabicNumber(level, true));
                            cbMenuItem.setActionCommand(makeCommand(CMD_RANK, String.valueOf(rankOrder), String.valueOf(level)));
                            if (person.getRankNumeric() == rankOrder
                                    && person.getRankLevel() == level) {
                                cbMenuItem.setSelected(true);
                            }
                            cbMenuItem.addActionListener(this);
                            cbMenuItem.setEnabled(true);
                            submenu.add(cbMenuItem);
                        }
                        if (submenu.getItemCount() > 20) {
                            MenuScroller.setScrollerFor(submenu, 20);
                        }
                        menu.add(submenu);
                    } else {
                        cbMenuItem = new JCheckBoxMenuItem(
                                rank.getName(profession));
                        cbMenuItem.setActionCommand(makeCommand(CMD_RANK, String.valueOf(rankOrder)));
                        if (person.getRankNumeric() == rankOrder) {
                            cbMenuItem.setSelected(true);
                        }
                        cbMenuItem.addActionListener(this);
                        cbMenuItem.setEnabled(true);
                        menu.add(cbMenuItem);
                    }
                }
                if (menu.getItemCount() > 20) {
                    MenuScroller.setScrollerFor(menu, 20);
                }
                popup.add(menu);
            }
            menu = new JMenu(resourceMap.getString("changeRankSystem.text")); //$NON-NLS-1$
            // First allow them to revert to the campaign system
            cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("useCampaignRankSystem.text")); //$NON-NLS-1$
            cbMenuItem.setActionCommand(makeCommand(CMD_RANKSYSTEM, "-1")); //$NON-NLS-1$
            cbMenuItem.addActionListener(this);
            cbMenuItem.setEnabled(true);
            menu.add(cbMenuItem);
            for (int system = 0; system < Ranks.RS_NUM; system++) {
                if (system == Ranks.RS_CUSTOM) {
                    continue;
                }
                cbMenuItem = new JCheckBoxMenuItem(
                        Ranks.getRankSystemName(system));
                cbMenuItem.setActionCommand(makeCommand(CMD_RANKSYSTEM, String.valueOf(system)));
                cbMenuItem.addActionListener(this);
                cbMenuItem.setEnabled(true);
                if (system == person.getRanks().getRankSystem()) {
                    cbMenuItem.setSelected(true);
                }
                menu.add(cbMenuItem);
            }
            if (menu.getItemCount() > 20) {
                MenuScroller.setScrollerFor(menu, 20);
            }
            popup.add(menu);
            if (StaticChecks.areAllWoB(selected)) {
                // MD Ranks
                menu = new JMenu(resourceMap.getString("changeMDRank.text")); //$NON-NLS-1$
                for (int i = Rank.MD_RANK_NONE; i < Rank.MD_RANK_NUM; i++) {
                    cbMenuItem = new JCheckBoxMenuItem(
                            Rank.getManeiDominiRankName(i));
                    cbMenuItem.setActionCommand(makeCommand(CMD_MANEI_DOMINI_RANK, String.valueOf(i)));
                    cbMenuItem.addActionListener(this);
                    cbMenuItem.setEnabled(true);
                    if (i == person.getManeiDominiRank()) {
                        cbMenuItem.setSelected(true);
                    }
                    menu.add(cbMenuItem);
                }
                if (menu.getItemCount() > 20) {
                    MenuScroller.setScrollerFor(menu, 20);
                }
                popup.add(menu);

                // MD Classes
                menu = new JMenu(resourceMap.getString("changeMDClass.text")); //$NON-NLS-1$
                for (int i = Person.MD_NONE; i < Person.MD_NUM; i++) {
                    cbMenuItem = new JCheckBoxMenuItem(
                            Person.getManeiDominiClassNames(i, Ranks.RS_WOB));
                    cbMenuItem.setActionCommand(makeCommand(CMD_MANEI_DOMINI_CLASS, String.valueOf(i)));
                    cbMenuItem.addActionListener(this);
                    cbMenuItem.setEnabled(true);
                    if (i == person.getManeiDominiClass()) {
                        cbMenuItem.setSelected(true);
                    }
                    menu.add(cbMenuItem);
                }
                if (menu.getItemCount() > 20) {
                    MenuScroller.setScrollerFor(menu, 20);
                }
                popup.add(menu);
            }
            if (StaticChecks.areAllWoBOrComstar(selected)) {
                menu = new JMenu(resourceMap.getString("changePrimaryDesignation.text")); //$NON-NLS-1$
                for (int i = Person.DESIG_NONE; i < Person.DESIG_NUM; i++) {
                    cbMenuItem = new JCheckBoxMenuItem(
                            Person.parseDesignator(i));
                    cbMenuItem.setActionCommand(makeCommand(CMD_PRIMARY_DESIGNATOR, String.valueOf(i)));
                    cbMenuItem.addActionListener(this);
                    cbMenuItem.setEnabled(true);
                    if (i == person.getPrimaryDesignator()) {
                        cbMenuItem.setSelected(true);
                    }
                    menu.add(cbMenuItem);
                }
                if (menu.getItemCount() > 20) {
                    MenuScroller.setScrollerFor(menu, 20);
                }
                popup.add(menu);

                menu = new JMenu(resourceMap.getString("changeSecondaryDesignation.text")); //$NON-NLS-1$
                for (int i = Person.DESIG_NONE; i < Person.DESIG_NUM; i++) {
                    cbMenuItem = new JCheckBoxMenuItem(
                            Person.parseDesignator(i));
                    cbMenuItem.setActionCommand(makeCommand(CMD_SECONDARY_DESIGNATOR, String.valueOf(i)));
                    cbMenuItem.addActionListener(this);
                    cbMenuItem.setEnabled(true);
                    if (i == person.getSecondaryDesignator()) {
                        cbMenuItem.setSelected(true);
                    }
                    menu.add(cbMenuItem);
                }
                if (menu.getItemCount() > 20) {
                    MenuScroller.setScrollerFor(menu, 20);
                }
                popup.add(menu);
            }
            menu = new JMenu(resourceMap.getString("changeStatus.text")); //$NON-NLS-1$
            for (int s = 0; s < Person.S_NUM; s++) {
                cbMenuItem = new JCheckBoxMenuItem(Person.getStatusName(s));
                if (person.getStatus() == s) {
                    cbMenuItem.setSelected(true);
                }
                cbMenuItem.setActionCommand(makeCommand(CMD_CHANGE_STATUS, String.valueOf(s)));
                cbMenuItem.addActionListener(this);
                cbMenuItem.setEnabled(true);
                menu.add(cbMenuItem);
            }
            popup.add(menu);

            if(oneSelected) {
                popup.add(newMenuItem(resourceMap.getString("imprison.text"), CMD_IMPRISON, person.isFree())); //$NON-NLS-1$
                popup.add(newMenuItem(resourceMap.getString("free.text"), CMD_FREE, !person.isFree())); //$NON-NLS-1$
                popup.add(newMenuItem(resourceMap.getString("recruit.text"), CMD_RECRUIT, //$NON-NLS-1$
                        person.isBondsman() || person.isWillingToDefect()));
            }

            menu = new JMenu(resourceMap.getString("changePrimaryRole.text")); //$NON-NLS-1$
            for (int i = Person.T_MECHWARRIOR; i < Person.T_NUM; i++) {
                if (person.canPerformRole(i)
                        && person.getSecondaryRole() != i) {
                    cbMenuItem = new JCheckBoxMenuItem(Person.getRoleDesc(
                            i, personnelTab.getCampaign().getFaction().isClan()));
                    cbMenuItem.setActionCommand(makeCommand(CMD_PRIMARY_ROLE, String.valueOf(i)));
                    if (person.getPrimaryRole() == i) {
                        cbMenuItem.setSelected(true);
                    }
                    cbMenuItem.addActionListener(this);
                    cbMenuItem.setEnabled(true);
                    menu.add(cbMenuItem);
                }
            }
            if (menu.getItemCount() > 20) {
                MenuScroller.setScrollerFor(menu, 20);
            }
            popup.add(menu);
            menu = new JMenu(resourceMap.getString("changeSecondaryRole.text")); //$NON-NLS-1$
            for (int i = 0; i < Person.T_NUM; i++) {
                if (i == Person.T_NONE
                        || (person.canPerformRole(i) && person
                                .getPrimaryRole() != i)) {
                    // you cant be an astech if you are a tech, or a medic
                    // if you are a doctor
                    if (person.isTechPrimary() && i == Person.T_ASTECH) {
                        continue;
                    }
                    if (person.getPrimaryRole() == Person.T_DOCTOR
                            && i == Person.T_MEDIC) {
                        continue;
                    }
                    cbMenuItem = new JCheckBoxMenuItem(Person.getRoleDesc(
                            i, personnelTab.getCampaign().getFaction().isClan()));
                    cbMenuItem.setActionCommand(makeCommand(CMD_SECONDARY_ROLE, String.valueOf(i)));
                    if (person.getSecondaryRole() == i) {
                        cbMenuItem.setSelected(true);
                    }
                    cbMenuItem.addActionListener(this);
                    cbMenuItem.setEnabled(true);
                    menu.add(cbMenuItem);
                }
            }
            if (menu.getItemCount() > 20) {
                MenuScroller.setScrollerFor(menu, 20);
            }
            popup.add(menu);
            // Bloodnames
            if (StaticChecks.areAllClanEligible(selected)) {
                menuItem = new JMenuItem(resourceMap.getString("giveRandomBloodname.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_BLOODNAME);
                menuItem.addActionListener(this);
                menuItem.setEnabled(StaticChecks.areAllActive(selected));
                popup.add(menuItem);
            }
            // change salary
            if (personnelTab.getCampaign().getCampaignOptions().payForSalaries()) {
                menuItem = new JMenuItem(resourceMap.getString("setSalary.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_EDIT_SALARY);
                menuItem.addActionListener(this);
                menuItem.setEnabled(StaticChecks.areAllActive(selected));
                popup.add(menuItem);
            }
            // switch pilot
            menu = new JMenu(resourceMap.getString("assignToUnit.text")); //$NON-NLS-1$
            JMenu pilotMenu = new JMenu(resourceMap.getString("assignAsPilot.text")); //$NON-NLS-1$
            JMenu crewMenu = new JMenu(resourceMap.getString("assignAsCrewmember.text")); //$NON-NLS-1$
            JMenu driverMenu = new JMenu(resourceMap.getString("assignAsDriver.text")); //$NON-NLS-1$
            JMenu gunnerMenu = new JMenu(resourceMap.getString("assignAsGunner.text")); //$NON-NLS-1$
            JMenu soldierMenu = new JMenu(resourceMap.getString("assignAsSoldier.text")); //$NON-NLS-1$
            JMenu techMenu = new JMenu(resourceMap.getString("assignAsTech.text")); //$NON-NLS-1$
            JMenu navMenu = new JMenu(resourceMap.getString("asignAsNavigator.text")); //$NON-NLS-1$
            /*
             * if(!person.isAssigned()) { cbMenuItem.setSelected(true); }
             */
            if (oneSelected && person.isActive()
                    && !(person.isPrisoner() || person.isBondsman())) {
                for (Unit unit : personnelTab.getCampaign().getUnits()) {
                    if (!unit.isAvailable()) {
                        continue;
                    }
                    if (unit.usesSoloPilot()) {
                        if (unit.canTakeMoreDrivers()
                                && person.canDrive(unit.getEntity())
                                && person.canGun(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_PILOT, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            pilotMenu.add(cbMenuItem);
                        }
                    } else if (unit.usesSoldiers()) {
                        if (unit.canTakeMoreGunners()
                                && person.canGun(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_SOLDIER, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            soldierMenu.add(cbMenuItem);
                        }
                    } else {
                        if (unit.canTakeMoreDrivers()
                                && person.canDrive(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_DRIVER, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            if (unit.getEntity() instanceof Aero) {
                                pilotMenu.add(cbMenuItem);
                            } else {
                                driverMenu.add(cbMenuItem);
                            }
                        }
                        if (unit.canTakeMoreGunners()
                                && person.canGun(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_GUNNER, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            gunnerMenu.add(cbMenuItem);
                        }
                        if (unit.canTakeMoreVesselCrew()
                                && person.hasSkill(SkillType.S_TECH_VESSEL)) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_CREW, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            crewMenu.add(cbMenuItem);
                        }
                        if (unit.canTakeNavigator()
                                && person.hasSkill(SkillType.S_NAV)) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_NAVIGATOR, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            navMenu.add(cbMenuItem);
                        }
                    }
                    if (unit.canTakeTech() && person.canTech(unit.getEntity())
                            && (person.getMaintenanceTimeUsing() + unit.getMaintenanceTime() <= 480)) {
                        cbMenuItem = new JCheckBoxMenuItem(String.format(resourceMap.getString("maintenanceTimeDesc.format"), //$NON-NLS-1$
                            unit.getName(), unit.getMaintenanceTime()));
                        // TODO: check the box
                        cbMenuItem.setActionCommand(makeCommand(CMD_ADD_TECH, unit.getId().toString()));
                        cbMenuItem.addActionListener(this);
                        techMenu.add(cbMenuItem);
                    }
                }
                if (pilotMenu.getItemCount() > 0) {
                    menu.add(pilotMenu);
                    if (pilotMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(pilotMenu, 20);
                    }
                }
                if (driverMenu.getItemCount() > 0) {
                    menu.add(driverMenu);
                    if (driverMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(driverMenu, 20);
                    }
                }
                if (crewMenu.getItemCount() > 0) {
                    menu.add(crewMenu);
                    if (crewMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(crewMenu, 20);
                    }
                }
                if (navMenu.getItemCount() > 0) {
                    menu.add(navMenu);
                    if (navMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(navMenu, 20);
                    }
                }
                if (gunnerMenu.getItemCount() > 0) {
                    menu.add(gunnerMenu);
                    if (gunnerMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(gunnerMenu, 20);
                    }
                }
                if (soldierMenu.getItemCount() > 0) {
                    menu.add(soldierMenu);
                    if (soldierMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(soldierMenu, 20);
                    }
                }
                if (techMenu.getItemCount() > 0) {
                    menu.add(techMenu);
                    if (techMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(techMenu, 20);
                    }
                }
                menu.setEnabled(!person.isDeployed());
                popup.add(menu);
            } else if (StaticChecks.areAllActive(selected) && StaticChecks.areAllEligible(selected)) {
                for (Unit unit : personnelTab.getCampaign().getUnits()) {
                    if (!unit.isAvailable()) {
                        continue;
                    }
                    if (StaticChecks.areAllInfantry(selected)) {
                        if (!(unit.getEntity() instanceof Infantry) || unit.getEntity() instanceof BattleArmor) {
                            continue;
                        }
                        if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_SOLDIER, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            soldierMenu.add(cbMenuItem);
                        }
                    } else if (StaticChecks.areAllBattleArmor(selected)) {
                        if (!(unit.getEntity() instanceof BattleArmor)) {
                            continue;
                        }
                        if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_SOLDIER, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            soldierMenu.add(cbMenuItem);
                        }
                    } else if (StaticChecks.areAllVeeGunners(selected)) {
                        if (!(unit.getEntity() instanceof Tank)) {
                            continue;
                        }
                        if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_GUNNER, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            gunnerMenu.add(cbMenuItem);
                        }
                    } else if (StaticChecks.areAllVesselGunners(selected)) {
                        if (!(unit.getEntity() instanceof Aero)) {
                            continue;
                        }
                        if (unit.canTakeMoreGunners() && person.canGun(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_GUNNER, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            gunnerMenu.add(cbMenuItem);
                        }
                    } else if (StaticChecks.areAllVesselCrew(selected)) {
                        if (!(unit.getEntity() instanceof Aero)) {
                            continue;
                        }
                        if (unit.canTakeMoreVesselCrew()
                                && person.hasSkill(SkillType.S_TECH_VESSEL)) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_CREW, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            crewMenu.add(cbMenuItem);
                        }
                    } else if (StaticChecks.areAllVesselPilots(selected)) {
                        if (!(unit.getEntity() instanceof Aero)) {
                            continue;
                        }
                        if (unit.canTakeMoreDrivers()
                                && person.canDrive(unit.getEntity())) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_VESSEL_PILOT, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            pilotMenu.add(cbMenuItem);
                        }
                    } else if (StaticChecks.areAllVesselNavigators(selected)) {
                        if (!(unit.getEntity() instanceof Aero)) {
                            continue;
                        }
                        if (unit.canTakeNavigator()
                                && person.hasSkill(SkillType.S_NAV)) {
                            cbMenuItem = new JCheckBoxMenuItem(
                                    unit.getName());
                            // TODO: check the box
                            cbMenuItem.setActionCommand(makeCommand(CMD_ADD_NAVIGATOR, unit.getId().toString()));
                            cbMenuItem.addActionListener(this);
                            navMenu.add(cbMenuItem);
                        }
                    }
                }
                if (soldierMenu.getItemCount() > 0) {
                    menu.add(soldierMenu);
                    if (soldierMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(soldierMenu, 20);
                    }
                }
                if (pilotMenu.getItemCount() > 0) {
                    menu.add(pilotMenu);
                    if (pilotMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(pilotMenu, 20);
                    }
                }
                if (driverMenu.getItemCount() > 0) {
                    menu.add(driverMenu);
                    if (driverMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(driverMenu, 20);
                    }
                }
                if (crewMenu.getItemCount() > 0) {
                    menu.add(crewMenu);
                    if (crewMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(crewMenu, 20);
                    }
                }
                if (navMenu.getItemCount() > 0) {
                    menu.add(navMenu);
                    if (navMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(navMenu, 20);
                    }
                }
                if (gunnerMenu.getItemCount() > 0) {
                    menu.add(gunnerMenu);
                    if (gunnerMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(gunnerMenu, 20);
                    }
                }
                if (soldierMenu.getItemCount() > 0) {
                    menu.add(soldierMenu);
                    if (soldierMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(soldierMenu, 20);
                    }
                }
                menu.setEnabled(!person.isDeployed());
                popup.add(menu);
            }
            cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("none.text")); //$NON-NLS-1$
            cbMenuItem.setActionCommand(makeCommand(CMD_REMOVE_UNIT, "-1")); //$NON-NLS-1$
            cbMenuItem.addActionListener(this);
            menu.add(cbMenuItem);
            if (oneSelected && person.isActive()) {
                if ((person.getAge(personnelTab.getCampaign().getCalendar()) > 13) && (person.getSpouseID() == null)) {
                    menu = new JMenu(resourceMap.getString("changeSpouse.text")); //$NON-NLS-1$
                    JMenuItem surnameMenu;
                    JMenu spouseMenu;
                    String type;
                    for (Person ps : personnelTab.getCampaign().getPersonnel()) {
                        if (person.safeSpouse(ps) && !ps.isDeadOrMIA()) {
                            String pStatus;
                            if (ps.isBondsman()) {
                                pStatus = String.format(resourceMap.getString("marriageBondsmanDesc.format"), //$NON-NLS-1$
                                    ps.getFullName(), ps.getAge(personnelTab.getCampaign().getCalendar()), ps.getRoleDesc());
                            } else if (ps.isPrisoner()) {
                                pStatus = String.format(resourceMap.getString("marriagePrisonerDesc.format"), //$NON-NLS-1$
                                    ps.getFullName(), ps.getAge(personnelTab.getCampaign().getCalendar()), ps.getRoleDesc());
                            } else {
                                pStatus = String.format(resourceMap.getString("marriagePartnerDesc.format"), //$NON-NLS-1$
                                    ps.getFullName(), ps.getAge(personnelTab.getCampaign().getCalendar()), ps.getRoleDesc());
                            }
                            spouseMenu = new JMenu(pStatus);
                            type = resourceMap.getString("marriageNoNameChange.text"); //$NON-NLS-1$
                            surnameMenu = new JMenuItem(type);
                            surnameMenu.setActionCommand(
                                makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_NO_CHANGE));
                            surnameMenu.addActionListener(this);
                            spouseMenu.add(surnameMenu);
                            if (!ps.isClanner() && !person.isClanner()) {
                                type = resourceMap.getString("marriageRenameSpouse.text"); //$NON-NLS-1$
                                surnameMenu = new JMenuItem(type);
                                surnameMenu.setActionCommand(
                                       makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_YOURS));
                                surnameMenu.addActionListener(this);
                                spouseMenu.add(surnameMenu);
                                type = resourceMap.getString("marriageRenameYourself.text"); //$NON-NLS-1$
                                surnameMenu = new JMenuItem(type);
                                surnameMenu.setActionCommand(
                                      makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_SPOUSE));
                                surnameMenu.addActionListener(this);
                                spouseMenu.add(surnameMenu);
                                type = resourceMap.getString("marriageHyphenateYourself.text"); //$NON-NLS-1$
                                surnameMenu = new JMenuItem(type);
                                surnameMenu.setActionCommand(
                                    makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_HYP_YOURS));
                                surnameMenu.addActionListener(this);
                                spouseMenu.add(surnameMenu);
                                type = resourceMap.getString("marriageHyphenateSpouse.text"); //$NON-NLS-1$
                                surnameMenu = new JMenuItem(type);
                                surnameMenu.setActionCommand(
                                    makeCommand(CMD_ADD_SPOUSE, ps.getId().toString(), OPT_SURNAME_HYP_SPOUSE));
                                surnameMenu.addActionListener(this);
                                spouseMenu.add(surnameMenu);
                            }
                            menu.add(spouseMenu);
                        }
                    }
                    if (menu.getItemCount() > 30) {
                        MenuScroller.setScrollerFor(menu, 20);
                    }
                    popup.add(menu);
                }
                if (person.getSpouseID() != null) {
                    menuItem = new JMenuItem(resourceMap.getString("removeSpouse.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(CMD_REMOVE_SPOUSE);
                    menuItem.addActionListener(this);
                    popup.add(menuItem);
                }
                menu = new JMenu(resourceMap.getString("spendXP.text")); //$NON-NLS-1$
                JMenu currentMenu = new JMenu(resourceMap.getString("spendOnCurrentSkills.text")); //$NON-NLS-1$
                JMenu newMenu = new JMenu(resourceMap.getString("spendOnNewSkills.text")); //$NON-NLS-1$
                for (int i = 0; i < SkillType.getSkillList().length; i++) {
                    String type = SkillType.getSkillList()[i];
                    int cost = person.hasSkill(type) ? person.getSkill(type).getCostToImprove() : SkillType.getType(type).getCost(0);
                    if( cost >= 0 ) {
                        String desc = String.format(resourceMap.getString("skillDesc.format"), type, cost); //$NON-NLS-1$
                        menuItem = new JMenuItem(desc);
                        menuItem.setActionCommand(makeCommand(CMD_IMPROVE, type, String.valueOf(cost)));
                        menuItem.addActionListener(this);
                        menuItem.setEnabled(person.getXp() >= cost);
                        if(person.hasSkill(type)) {
                            currentMenu.add(menuItem);
                        } else {
                            newMenu.add(menuItem);
                        }
                    }
                }
                menu.add(currentMenu);
                menu.add(newMenu);
                if (personnelTab.getCampaign().getCampaignOptions().useAbilities()) {
                    JMenu abMenu = new JMenu(resourceMap.getString("spendOnSpecialAbilities.text")); //$NON-NLS-1$
                    int cost = -1;
                    for (Enumeration<IOption> i = person.getOptions(PilotOptions.LVL3_ADVANTAGES); i.hasMoreElements(); ) {
                        IOption ability = i.nextElement();
                        if (!ability.booleanValue()) {
                            SpecialAbility spa = SpecialAbility.getAbility(ability.getName());
                            if (null == spa) {
                                continue;
                            }
                            if (!spa.isEligible(person)) {
                                continue;
                            }
                            cost = spa.getCost();
                            String costDesc;
                            if(cost < 0) {
                                costDesc = resourceMap.getString("costNotPossible.text"); //$NON-NLS-1$
                            } else {
                                costDesc = String.format(resourceMap.getString("costValue.format"), cost); //$NON-NLS-1$
                            }
                            boolean available = (cost >= 0) && (person.getXp() >= cost);
                            if (ability.getName().equals("weapon_specialist")) { //$NON-NLS-1$
                                Unit u = personnelTab.getCampaign().getUnit(person.getUnitId());
                                if (null != u) {
                                    JMenu specialistMenu = new JMenu(resourceMap.getString("weaponSpecialist.text")); //$NON-NLS-1$
                                    TreeSet<String> uniqueWeapons = new TreeSet<String>();
                                    for (int j = 0; j < u.getEntity().getWeaponList().size(); j++) {
                                        Mounted m = u.getEntity().getWeaponList().get(j);
                                        uniqueWeapons.add(m.getName());
                                    }
                                    for (String name : uniqueWeapons) {
                                        menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), name, costDesc)); //$NON-NLS-1$
                                        menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_WEAPON_SPECIALIST, name, String.valueOf(cost)));
                                        menuItem.addActionListener(this);
                                        menuItem.setEnabled(available);
                                        specialistMenu.add(menuItem);
                                    }
                                    abMenu.add(specialistMenu);
                                }
                            } else if (ability.getName().equals("specialist")) { //$NON-NLS-1$
                                JMenu specialistMenu = new JMenu(resourceMap.getString("specialist.text")); //$NON-NLS-1$
                                menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("laserSpecialist.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
                                menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_SPECIALIST, Crew.SPECIAL_LASER, String.valueOf(cost)));
                                menuItem.addActionListener(this);
                                menuItem.setEnabled(available);
                                specialistMenu.add(menuItem);
                                menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("missileSpecialist.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
                                menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_SPECIALIST, Crew.SPECIAL_MISSILE, String.valueOf(cost)));
                                menuItem.addActionListener(this);
                                menuItem.setEnabled(available);
                                specialistMenu.add(menuItem);
                                menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("ballisticSpecialist.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
                                menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_SPECIALIST, Crew.SPECIAL_BALLISTIC, String.valueOf(cost)));
                                menuItem.addActionListener(this);
                                menuItem.setEnabled(available);
                                specialistMenu.add(menuItem);
                                abMenu.add(specialistMenu);
                            } else if (ability.getName().equals("range_master")) { //$NON-NLS-1$
                                JMenu specialistMenu = new JMenu(resourceMap.getString("rangemaster.text")); //$NON-NLS-1$
                                menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("rangemaster_med.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
                                menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_RANGEMASTER, Crew.RANGEMASTER_MEDIUM, String.valueOf(cost)));
                                menuItem.addActionListener(this);
                                menuItem.setEnabled(available);
                                specialistMenu.add(menuItem);
                                menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("rangemaster_lng.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
                                menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_RANGEMASTER, Crew.RANGEMASTER_LONG, String.valueOf(cost)));
                                menuItem.addActionListener(this);
                                menuItem.setEnabled(available);
                                specialistMenu.add(menuItem);
                                menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), resourceMap.getString("rangemaster_xtm.text"), costDesc)); //$NON-NLS-1$ //$NON-NLS-2$
                                menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_RANGEMASTER, Crew.RANGEMASTER_EXTREME, String.valueOf(cost)));
                                menuItem.addActionListener(this);
                                menuItem.setEnabled(available);
                                specialistMenu.add(menuItem);
                                abMenu.add(specialistMenu);
                            } else {
                                menuItem = new JMenuItem(String.format(resourceMap.getString("abilityDesc.format"), ability.getDisplayableName(), costDesc)); //$NON-NLS-1$
                                menuItem.setActionCommand(makeCommand(CMD_ACQUIRE_ABILITY, ability.getName(), String.valueOf(cost)));
                                menuItem.addActionListener(this);
                                menuItem.setEnabled(available);
                                abMenu.add(menuItem);
                            }
                        }
                    }
                    if (abMenu.getItemCount() > 20) {
                        MenuScroller.setScrollerFor(abMenu, 20);
                    }
                    menu.add(abMenu);
                }
                popup.add(menu);
            }
            if (oneSelected && person.isActive()) {
                if (personnelTab.getCampaign().getCampaignOptions().useEdge()) {
                    menu = new JMenu(resourceMap.getString("setEdgeTriggers.text")); //$NON-NLS-1$
                    cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$
                    cbMenuItem.setSelected(person.getOptions()
                            .booleanOption(OPT_EDGE_HEADHIT));
                    cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_HEADHIT));
                    cbMenuItem.addActionListener(this);
                    menu.add(cbMenuItem);
                    cbMenuItem = new JCheckBoxMenuItem(
                            resourceMap.getString("edgeTriggerTAC.text")); //$NON-NLS-1$
                    cbMenuItem.setSelected(person.getOptions()
                            .booleanOption(OPT_EDGE_TAC));
                    cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_TAC));
                    cbMenuItem.addActionListener(this);
                    menu.add(cbMenuItem);
                    cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerKO.text")); //$NON-NLS-1$
                    cbMenuItem.setSelected(person.getOptions()
                            .booleanOption(OPT_EDGE_KO));
                    cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_KO));
                    cbMenuItem.addActionListener(this);
                    menu.add(cbMenuItem);
                    cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerExplosion.text")); //$NON-NLS-1$
                    cbMenuItem.setSelected(person.getOptions()
                            .booleanOption(OPT_EDGE_EXPLOSION));
                    cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_EXPLOSION));
                    cbMenuItem.addActionListener(this);
                    menu.add(cbMenuItem);
                    cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("edgeTriggerMASCFailure.text")); //$NON-NLS-1$
                    cbMenuItem.setSelected(person.getOptions()
                            .booleanOption(OPT_EDGE_MASC_FAILURE));
                    cbMenuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_MASC_FAILURE));
                    cbMenuItem.addActionListener(this);
                    menu.add(cbMenuItem);
                    popup.add(menu);
                }
                menu = new JMenu(resourceMap.getString("specialFlags.text")); //$NON-NLS-1$
                cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("dependent.text")); //$NON-NLS-1$
                cbMenuItem.setSelected(person.isDependent());
                cbMenuItem.setActionCommand(CMD_DEPENDENT);
                cbMenuItem.addActionListener(this);
                menu.add(cbMenuItem);
                cbMenuItem = new JCheckBoxMenuItem(resourceMap.getString("commander.text")); //$NON-NLS-1$
                cbMenuItem.setSelected(person.isCommander());
                cbMenuItem.setActionCommand(CMD_COMMANDER);
                cbMenuItem.addActionListener(this);
                menu.add(cbMenuItem);
                popup.add(menu);
            } else if (StaticChecks.areAllActive(selected)) {
                if (personnelTab.getCampaign().getCampaignOptions().useEdge()) {
                    menu = new JMenu(resourceMap.getString("setEdgeTriggers.text")); //$NON-NLS-1$
                    submenu = new JMenu(resourceMap.getString("on.text")); //$NON-NLS-1$
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_HEADHIT, TRUE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerTAC.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_TAC, TRUE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerKO.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_KO, TRUE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerExplosion.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_EXPLOSION, TRUE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerMASCFailure.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_MASC_FAILURE, TRUE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menu.add(submenu);
                    submenu = new JMenu(resourceMap.getString("off.text")); //$NON-NLS-1$
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_HEADHIT, FALSE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerTAC.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_TAC, FALSE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerKO.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_KO, FALSE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerExplosion.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_EXPLOSION, FALSE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerMASCFailure.text")); //$NON-NLS-1$
                    menuItem.setActionCommand(makeCommand(CMD_EDGE_TRIGGER, OPT_EDGE_MASC_FAILURE, FALSE));
                    menuItem.addActionListener(this);
                    submenu.add(menuItem);
                    menu.add(submenu);
                    popup.add(menu);
                }
                menu = new JMenu(resourceMap.getString("specialFlags.text")); //$NON-NLS-1$
                submenu = new JMenu(resourceMap.getString("dependent.text")); //$NON-NLS-1$
                menuItem = new JMenuItem(resourceMap.getString("yes.text")); //$NON-NLS-1$
                menuItem.setActionCommand(makeCommand(CMD_DEPENDENT, TRUE));
                menuItem.addActionListener(this);
                submenu.add(menuItem);
                menuItem = new JMenuItem(resourceMap.getString("no.text")); //$NON-NLS-1$
                menuItem.setActionCommand(makeCommand(CMD_DEPENDENT, FALSE));
                menuItem.addActionListener(this);
                submenu.add(menuItem);
                menu.add(submenu);
                popup.add(menu);
            }
            if (oneSelected) {
                // change portrait
                menuItem = new JMenuItem(resourceMap.getString("changePortrait.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_EDIT_PORTRAIT);
                menuItem.addActionListener(this);
                menuItem.setEnabled(true);
                popup.add(menuItem);
                // change Biography
                menuItem = new JMenuItem(resourceMap.getString("changeBiography.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_EDIT_BIOGRAPHY);
                menuItem.addActionListener(this);
                menuItem.setEnabled(true);
                popup.add(menuItem);
                menuItem = new JMenuItem(resourceMap.getString("changeCallsign.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_CALLSIGN);
                menuItem.addActionListener(this);
                menuItem.setEnabled(true);
                popup.add(menuItem);
                menuItem = new JMenuItem(resourceMap.getString("editPersonnelLog.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_EDIT_PERSONNEL_LOG);
                menuItem.addActionListener(this);
                menuItem.setEnabled(true);
                popup.add(menuItem);

            }
            menuItem = new JMenuItem(resourceMap.getString("addSingleLogEntry.text")); //$NON-NLS-1$
            menuItem.setActionCommand(CMD_EDIT_LOG_ENTRY);
            menuItem.addActionListener(this);
            menuItem.setEnabled(true);
            popup.add(menuItem);
            if (oneSelected || StaticChecks.allHaveSameUnit(selected)) {
                menuItem = new JMenuItem(resourceMap.getString("assignKill.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_KILL);
                menuItem.addActionListener(this);
                menuItem.setEnabled(true);
                popup.add(menuItem);
            }
            if (oneSelected) {
                menuItem = new JMenuItem(resourceMap.getString("editKillLog.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_EDIT_KILL_LOG);
                menuItem.addActionListener(this);
                menuItem.setEnabled(true);
                popup.add(menuItem);
            }
            menuItem = new JMenuItem(resourceMap.getString("exportPersonnel.text")); //$NON-NLS-1$
            menuItem.addActionListener(ev -> personnelTab.getCampaignGui().miExportPersonActionPerformed(ev));
            menuItem.setEnabled(true);
            popup.add(menuItem);
            if (personnelTab.getCampaign().getCampaignOptions().getUseAtB()
                    && StaticChecks.areAllActive(selected)) {
                menuItem = new JMenuItem(resourceMap.getString("sack.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_SACK);
                menuItem.addActionListener(this);
                popup.add(menuItem);
            }
            menu = new JMenu(resourceMap.getString("gmMode.text")); //$NON-NLS-1$

            menuItem = new JMenu(resourceMap.getString("changePrisonerStatus.text")); //$NON-NLS-1$
            menuItem.add(newCheckboxMenu(
                    Person.getPrisonerStatusName(Person.PRISONER_NOT),
                    makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_FREE),
                    person.getPrisonerStatus() == Person.PRISONER_NOT));
            menuItem.add(newCheckboxMenu(
                    Person.getPrisonerStatusName(Person.PRISONER_YES),
                    makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_IMPRISONED),
                    (person.getPrisonerStatus() == Person.PRISONER_YES) && !person.isWillingToDefect()));
            menuItem.add(newCheckboxMenu(
                    resourceMap.getString("prisonerWillingToDefect.text"), //$NON-NLS-1$
                    makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_IMPRISONED_DEFECTING),
                    (person.getPrisonerStatus() == Person.PRISONER_YES) && person.isWillingToDefect()));
            menuItem.add(newCheckboxMenu(
                    Person.getPrisonerStatusName(Person.PRISONER_BONDSMAN),
                    makeCommand(CMD_CHANGE_PRISONER_STATUS, OPT_PRISONER_BONDSMAN),
                    person.getPrisonerStatus() == Person.PRISONER_BONDSMAN));
            menuItem.setEnabled(personnelTab.getCampaign().isGM());
            menu.add(menuItem);

            menuItem = new JMenuItem(resourceMap.getString("removePerson.text")); //$NON-NLS-1$
            menuItem.setActionCommand(CMD_REMOVE);
            menuItem.addActionListener(this);
            menuItem.setEnabled(personnelTab.getCampaign().isGM());
            menu.add(menuItem);
            if (!personnelTab.getCampaign().getCampaignOptions().useAdvancedMedical()) {
                menuItem = new JMenuItem(resourceMap.getString("healPerson.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_HEAL);
                menuItem.addActionListener(this);
                menuItem.setEnabled(personnelTab.getCampaign().isGM());
                menu.add(menuItem);
            }
            menuItem = new JMenuItem(resourceMap.getString("addXP.text")); //$NON-NLS-1$
            menuItem.setActionCommand(CMD_ADD_XP);
            menuItem.addActionListener(this);
            menuItem.setEnabled(personnelTab.getCampaign().isGM());
            menu.add(menuItem);
            menuItem = new JMenuItem(resourceMap.getString("setXP.text")); //$NON-NLS-1$
            menuItem.setActionCommand(CMD_SET_XP);
            menuItem.addActionListener(this);
            menuItem.setEnabled(personnelTab.getCampaign().isGM());
            menu.add(menuItem);
            if (personnelTab.getCampaign().getCampaignOptions().useEdge()) {
                menuItem = new JMenuItem(resourceMap.getString("setEdge.text")); //$NON-NLS-1$
                menuItem.setActionCommand(CMD_SET_EDGE);
                menuItem.addActionListener(this);

After Change


                menu.add(cbMenuItem);
                popup.add(menu);
            } else if (StaticChecks.areAllActive(selected)) {
                if (gui.getCampaign().getCampaignOptions().useEdge()) {
                    menu = new JMenu(resourceMap.getString("setEdgeTriggers.text")); //$NON-NLS-1$
                    submenu = new JMenu(resourceMap.getString("on.text")); //$NON-NLS-1$
                    menuItem = new JMenuItem(resourceMap.getString("edgeTriggerHeadHits.text")); //$NON-NLS-1$